/* Validateur de fichier XML par rapport à un fichier DTD
 */

#ifndef _DTD_VALIDATOR
#define _DTD_VALIDATOR


#include "../DTD/tree/DtdTree.h"
#include "../XML/Balise.h"

#include <string>


class DtdValidator
{
public :
	DtdValidator(Balise* p_xmlDoc, DtdTree* p_dtdDoc);

	/* Renvoie true sur le document XML est valide par rapport à la DTD */
	bool isValid( ) const;

	/* Renvoie la source d'erreur de la validation, ou une chaine vide si
	 * il n'y a pas eu d'erreur */
	const std::string& getErrMsg() const;

private :
	Balise *xmlDoc;
	DtdTree *dtdDoc;

private :
	bool recurValid(Balise *p_xmlDoc, DtdTree *p_dtdDoc) const;

	mutable std::string errMsg;
};


#endif
